home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / TextObjects.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  7KB  |  198 lines

  1. /*
  2.      File:        TextObjects.h
  3.  
  4.      Contains:    Text object Interfaces.
  5.  
  6.      Version:    Technology:    System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __TEXTOBJECTS__
  19. #define __TEXTOBJECTS__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. #ifndef __UNICODE__
  28. #include <Unicode.h>
  29. #endif
  30. #ifndef __TEXTCOMMON__
  31. #include <TextCommon.h>
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_IMPORT_SUPPORTED
  39. #pragma import on
  40. #endif
  41.  
  42. #if PRAGMA_ALIGN_SUPPORTED
  43. #pragma options align=mac68k
  44. #endif
  45.  
  46. #if FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  47. /* Basic data types */
  48. typedef UInt32 TextObjectUnit;
  49. typedef TextObjectUnit *TextObject;
  50. typedef TextObject *TextObjectPtr;
  51. typedef const TextObjectUnit *ConstTextObject;
  52. /* Indices into text objects */
  53. typedef UInt32 TextObjectIndex;
  54.  
  55. enum {
  56.     kTextObjectStart            = 0L,
  57.     kTextObjectEnd                = 0xFFFFFFFF
  58. };
  59.  
  60. /* Option flags */
  61. typedef OptionBits TextObjectOptions;
  62. /*
  63.  The default or standard OptionBits are all zero by convention. The following
  64.    symbolic constant is provided for code readability. 
  65. */
  66.  
  67. enum {
  68.     kTextObjStandardOptions        = 0
  69. };
  70.  
  71.  
  72. enum {
  73.     kTextObjNormalizeOptBit        = 0
  74. };
  75.  
  76.  
  77. enum {
  78.     kTextObjDontNormalizeOpt    = 0 << kTextObjNormalizeOptBit,
  79.     kTextObjNormalizeOpt        = 1 << kTextObjNormalizeOptBit
  80. };
  81.  
  82. /* Creation and destruction */
  83. extern OSStatus NewTextObject(TextObject *newTextObject);
  84.  
  85. extern OSStatus InitPersistentTextObject(TextObjectUnit textObjectSpace[], ByteCount sizeInBytes);
  86.  
  87. extern OSStatus DisposeTextObject(TextObject textObject);
  88.  
  89. extern OSStatus CreateTextObjectFromTextObject(ConstTextObject oldTextObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObject *newTextObject, TextObjectOptions optionBits);
  90.  
  91. /* Text content manipulation */
  92. extern OSStatus InstallTextIntoTextObject(const char *srcText, ByteCount srcLengthInBytes, TextEncoding srcEncoding, LocaleIdentifier language, TextObject destTextObject, TextObjectOptions optionBits);
  93.  
  94. extern OSStatus AppendTextToTextObject(const char *srcText, ByteCount srcLengthInBytes, TextEncoding srcEncoding, LocaleIdentifier language, TextObject destTextObject, TextObjectOptions optionBits);
  95.  
  96. extern OSStatus ExtractTextFromTextObject(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, char *destText, ByteCount destMaxSizeInBytes, TextEncoding destEncoding, LocaleIdentifier *language, ByteCount *destSizeInBytes, TextObjectIndex *nextSrcIndex);
  97.  
  98. extern OSStatus ReplaceInTextObject(TextObject destText, TextObjectIndex destStartIndex, TextObjectIndex destEndIndex, ConstTextObject srcText, TextObjectIndex srcStartIndex, TextObjectIndex srcEndIndex, TextObjectIndex *newStartIndex, TextObjectIndex *newEndIndex);
  99.  
  100. /* Text object information */
  101. extern Boolean IsPersistentTextObject(ConstTextObject textObject);
  102.  
  103. extern Boolean IsTextObjectEmpty(ConstTextObject textObject);
  104.  
  105. extern ByteCount GetTextObjectSize(ConstTextObject textObject);
  106.  
  107. extern ByteCount GetTextObjectMaxSize(ConstTextObject textObject);
  108.  
  109. extern TextObjectIndex GetTextObjectEndIndex(ConstTextObject textObject);
  110.  
  111. extern ByteCount ComputePersistentTextObjectSize(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObjectOptions optionBits);
  112.  
  113. extern ByteCount ComputePersistentTextObjectFromTextSize(const char *text, ByteCount textByteLength, TextEncoding textEncoding, LocaleIdentifier language, TextObjectOptions optionBits);
  114.  
  115. extern OSStatus ComputeTextObjectExtractedTextSize(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, ByteCount destMaxSizeInBytes, TextEncoding destEncoding, LocaleIdentifier *language, ByteCount *destResultLengthInBytes, TextObjectIndex *nextSrcIndex);
  116.  
  117. extern OSStatus GetTextObjectTextTags(ConstTextObject textObject, TextObjectIndex index, TextEncoding *encoding, LocaleIdentifier *language);
  118.  
  119. /* This is equivalent to the preceding function. The preceding name is preferred. */
  120. extern OSStatus GetTextObjectEncodingAndLocaleIdentifier(ConstTextObject textObject, TextObjectIndex index, TextEncoding *encoding, LocaleIdentifier *language);
  121.  
  122. /* Bulk access to text content */
  123. struct TextObjectTextInfo {
  124.     TextEncoding                     encoding;
  125.     LocaleIdentifier                 language;
  126.     TextObjectIndex                 startIndex;
  127.     TextObjectIndex                 endIndex;
  128.     ByteCount                         textLength;
  129.     const char *                    text;
  130. };
  131. typedef struct TextObjectTextInfo TextObjectTextInfo;
  132.  
  133. extern OSStatus CountTextObjectTextRuns(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, ItemCount *numTextRuns);
  134.  
  135. extern OSStatus GetTextObjectTextRuns(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, ItemCount runArraySize, TextObjectTextInfo runInfo[], ItemCount *actualNumTextRuns);
  136.  
  137. /* Comparison functions are in TextUtils */
  138. /* Annotations */
  139. /* Annotation types are given by the traditional four-character codes */
  140. typedef FourCharCode TextObjectAnnotationTag;
  141. /* A wildcard tag to specify all annotations */
  142.  
  143. enum {
  144.     kTextObjAnyAnnotationType    = '****'
  145. };
  146.  
  147. /* Annotation attributes */
  148. typedef OptionBits TextObjectAnnotationAttributes;
  149. /* Annotation attribute bits */
  150.  
  151. enum {
  152.     kTextObjAnnotationChangedMask = 0x01,
  153.     kTextObjTextChangedMask        = 0x02
  154. };
  155.  
  156. extern OSStatus AnnotateTextObject(TextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObjectAnnotationTag annotationType, ByteCount dataLength, const void *data, TextObjectAnnotationAttributes annotationOptions);
  157.  
  158. extern OSStatus DeleteTextObjectAnnotations(TextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObjectAnnotationTag annotationType);
  159.  
  160. /* Accessing annotations */
  161. struct TextObjectAnnotationInfo {
  162.     TextObjectAnnotationTag         annotationType;
  163.     TextObjectIndex                 rangeStart;
  164.     TextObjectIndex                 rangeEnd;
  165.     TextObjectAnnotationAttributes     attributes;
  166.     ByteCount                         dataSize;
  167.     const void *                    data;
  168. };
  169. typedef struct TextObjectAnnotationInfo TextObjectAnnotationInfo;
  170.  
  171. extern OSStatus CountTextObjectAnnotations(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObjectAnnotationTag annotationType, ItemCount *numAnnotations);
  172.  
  173. extern OSStatus GetTextObjectAnnotations(ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObjectAnnotationTag annotationType, ItemCount infoArraySize, TextObjectAnnotationInfo annotationInfo[], ItemCount *actualNumAnnotations);
  174.  
  175. extern OSStatus SetAnnotationAttributes(TextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, TextObjectAnnotationTag annotationType, TextObjectAnnotationAttributes annotationOptions);
  176.  
  177. /* Miscellaneous */
  178. extern OSStatus VerifyTextObject(ConstTextObject textObject);
  179.  
  180. extern OSStatus NormalizeTextObject(TextObject textObject);
  181.  
  182. #endif
  183.  
  184. #if PRAGMA_ALIGN_SUPPORTED
  185. #pragma options align=reset
  186. #endif
  187.  
  188. #if PRAGMA_IMPORT_SUPPORTED
  189. #pragma import off
  190. #endif
  191.  
  192. #ifdef __cplusplus
  193. }
  194. #endif
  195.  
  196. #endif /* __TEXTOBJECTS__ */
  197.  
  198.